\documentclass[10pt,a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage[brazil]{babel}
\usepackage[utf8]{inputenc}


\usepackage{ae,aecompl}
\usepackage{pslatex}
\usepackage{epsfig}
\usepackage{geometry}
\usepackage{url}
\usepackage{textcomp}
\usepackage{ae}
\usepackage{subfig}
\usepackage{indentfirst}
\usepackage{textcomp}
\usepackage{color}
\usepackage{setspace}
\usepackage{verbatim}
\usepackage{hyperref}

% Gráficos
\usepackage{pgfplots}
\pgfplotsset{compat=1.3}
\usepgfplotslibrary{groupplots}

\usepackage{hyperref}
\hypersetup{
    colorlinks,%
    citecolor=black,%
    filecolor=black,%
    linkcolor=blue,%
    urlcolor=blue
}

\usepackage[compact]{titlesec}
\titlespacing{\section}{0pt}{*0}{*0}
\titlespacing{\subsection}{0pt}{*0}{*0}
\titlespacing{\subsubsection}{0pt}{*0}{*0}

% Definindo as margens para 2cm e o espaçamento entre linhas para 1.5
% Relatório parcial deve ter espaçamento simples
% \linespread{1.5}

\geometry{ 
  a4paper,	% Formato do papel
  tmargin=10mm,	% Margem superior
  bmargin=20mm,	% Margem inferior
  lmargin=20mm,	% Margem esquerda
  rmargin=20mm,	% Margem direita
  footskip=20mm	% Espaço entre o rodapé e o fim do texto
}
\renewcommand{\thetable}{\Roman{table}}
\newcommand{\x} {$\bullet$}


\begin{document}


\setlength{\parskip}{0pt}
\setlength{\parsep}{0pt}
\setlength{\headsep}{0pt}
\setlength{\topskip}{0pt}
\setlength{\topmargin}{0pt}
\setlength{\topsep}{0pt}
\setlength{\partopsep}{0pt}


% Guia para o relatório
% Quais são os principais parâmetros a serem definidos em uma cache?
% Quais são os valores típicos para esses parâmetros?
% Quais devem ser os limites mínimos e máximos desses valores?
% Olhe no manual do dinero e descubra quais desses parâmetros ele
% permite configurar -- Done
% Como podemos dizer que uma determinada configuração de cache é melhor que outra?
% O que é um trace de execução? -- Done +-
% Por que utilizar um trace de execução para achar a melhor configuração de cache para um programa?
% Por que escolher a melhor configuração de cache para um dado programa? A configuração de cache não é específica do processador?
% Olhe aqui qual o programa e número de arquivos você deve usar
\begin{minipage}{5cm}
  \makebox[5cm][l]{\rule{4cm}{1mm}{\hspace{4mm}\bf Tiago Chedraoui Silva \hspace{2mm}RA:082941
      \hspace{2mm} Turma: A}\hspace{4mm} \rule{4cm}{1mm} }
  \vspace{2mm}
\end{minipage}

\vspace{-3mm}
\section{Objetivo}
O objetivo desse laboratório era criar um benchmark e medir o desempenho de vários computadores.
Para posteriormente listar, em ordem de desempenho, todos os computadores avaliados pela turma.
\section{Parte individual}
Programa ``Controle de concorrência em banco de
dados''(\href{http://tinyurl.com/4kek6xs}{Link}). Objetivo principal
do teste: paralelismo da máquina.
\section{Dados coletados}
Os dados coletados estão disponíveis no \href{http://tinyurl.com/4kaohe3}{site} da
disciplina e estão inseridos no gráfico abaixo. Nele
temos o tempo de execução de um programa em diferentes máquinas. Os
gráficos separados estão \href{http://mc723-1s2011-tcs.googlecode.com/svn/trunk/lab2/graficos.pdf}{aqui}.

\begin{tikzpicture}
  \begin{axis}[
    ylabel=Tempo,
    xlabel=Máquina,
    height=8cm,
    width=8cm,
    grid=major,
    legend pos=outer north east]
    
    \addplot+[error bars/.cd,
    y dir=both,y explicit,
    error mark=triangle*]
    table[x=pc,y=tempo,y error=desvio] {plotdata/prog1.dat};
    \addplot+[error bars/.cd,
    y dir=both,y explicit,
    error mark=triangle*]
    table[x=pc,y=tempo,y error=desvio] {plotdata/prog2.dat};
    \addplot+[error bars/.cd,
    y dir=both,y explicit,
    error mark=triangle*]
    table[x=pc,y=tempo,y error=desvio] {plotdata/prog3.dat};
    \addplot+[error bars/.cd,
    y dir=both,y explicit,
    error mark=triangle*]
    table[x=pc,y=tempo,y error=desvio] {plotdata/prog4.dat};

    \addplot+[error bars/.cd,
    y dir=both,y explicit,
    error mark=triangle*]
    table[x=pc,y=tempo,y error=desvio] {plotdata/prog5.dat};
    \addplot+[error bars/.cd,
    y dir=both,y explicit,
    error mark=triangle*]
    table[x=pc,y=tempo,y error=desvio] {plotdata/prog6.dat};

    \addplot+[error bars/.cd,
    y dir=both,y explicit,
    error mark=triangle*]
    table[x=pc,y=tempo,y error=desvio] {plotdata/prog7.dat};
    \addplot+[error bars/.cd,
    y dir=both,y explicit,
    error mark=triangle*]
    table[x=pc,y=tempo,y error=desvio] {plotdata/prog8.dat};
    \addplot+[error bars/.cd,
    y dir=both,y explicit,
    error mark=triangle*]
    table[x=pc,y=tempo,y error=desvio] {plotdata/prog9.dat};
    \addplot+[error bars/.cd,
    y dir=both,y explicit,
    error mark=triangle*]
    table[x=pc,y=tempo,y error=desvio] {plotdata/prog10.dat};

    \legend{
      GLPK (GNU Linear Programming Kit),
      gnuplot,
      OggEnc,
      ffmpeg,
      Caça palavras,
      ImageMagick,
      Controle de concorrência em banco de dados,
      LAME MP3 Encoder,
      PdfToPS,
      SHA512SUM}
  \end{axis}
\end{tikzpicture}
\vspace{-5mm}

\section{Análise}
Pelos dados coletados podemos ordernar as máquinas pelo seu
desempenho.
Para isso fizemos uma média da eficiência relativa a todos os
programas rodando em todas as máquinas. Ou seja, dado um programa a
máquina mais rápida fica na primeira posição a mais lenta na última.
A máquina que a média de posições for a menor é a mais rápida para um
caso geral. \href{http://tinyurl.com/6k3ypjz}{Link } para o programa e dados.
\vspace{-5mm}

\begin{table}[h!]
\caption{Descrição das máquinas ordenadas pelo desempenho medido}
\begin{tabular}{clc}
\hline
Máquina & Descrição & Posição média das execuções\\
\hline
5	&	Intel Core 2 Duo 2.8GHz, 4GB RAM & 2.0\\
9 &	Intel Xeon E5405, 2 procs dual-core, 2.00GHz, 6MB cache, 1GB
RAM & 2.55\\
3	&	Core 2 Quad 2.66GHz, 4MB L2, 4GB RAM & 3.10\\
4	&	Core 2 Duo 2.66Ghz, 4GB RAM & 3.11\\
6	&	Intel Core 2 Duo 2.66GHz, 1.9GB RAM & 4.3 \\
1	&	  Xeon 4 cores 2,4 Ghz, 1GB RAM & 4.77\\
11 &	Intel Pentium D T2390 1.86GHz, 2GB RAM & 4.83\\
8 &	Intel Pentium 4, 2 procs single-core, 3.00GHz, 2MB cache, 1GB
RAM & 5.3\\
2	&	Pentium 4 2.8Ghz, 512MB RAM & 7.0\\
7	&	Intel Pentium 4 1.80 GHZ, 1 GB RAM & 10.5\\
\hline
\end{tabular}
\end{table}

\vspace{-5mm}
\section{Conclusão}
A partir dos dados coletados, programas multi-thread (principalmente
os programas 5 e 7), executados em máquinas com mais núcleos (máquina 3), têm um tempo
``real'' menor que outros programas executados nas mesmas, já ele é executado em paralelo pelos
diversos núcleos do processador. Porém, se usarmos os tempo de ``user+sys''
programas o tempo de cada núcleo é somado, logo sua execução chega ser
a parecida com um programa sequencial.

Configurações como memória cache influenciam consideravelmente o tempo de
execução de um programa que faz bastante acesso à memória. Além disso,
 uma alta frequência do processador, ajuda no tempo total de execução
do programa.

Logo, o programa mais eficiente, baseado nos testes, seria um cuja
configuração possui uma grande memória ram, uma frequência alta e mais
de um núcleo. O que é verificado pela tabela 1.
 O computador 5 é o
mais rápido na execução da maioria dos programas, exceto na execução
do programa ``caça palavras'' no qual se testa o
paralelismo da máquina. Como o computador 3 possui mais núcleos, ele tende a ser
melhor que o computador 5, o que foi verificado pelos testes.

Observação 1: infelizmente nem todos as máquinas executaram todos os
programas o que prejudica um pouco as análises. 

Observação 2: A máquina 10 como não
foi especificada na planilha de acordo o pedido foi ignorada.

% ******************************************************
% REFERENCIAS BIBLIOGRÁFICAS
% ******************************************************
% \section{Referências}
%\bibliographystyle{plain}
%\begin{small}
%  \bibliography{referencias}
%\end{small}

\end{document}
